import request from '@/utils/request'
import type {PageResult, UserDetail, UserQuery} from '@/types/user'
import type {PageQuery} from '@/types/common'

/**
 * 根据ID获取用户信息
 * @param id 用户ID
 */
export function getUserById(id: string): Promise<UserDetail> {
  return request.get(`/user-biz/user/${id}`)
}

/**
 * 根据用户名获取用户信息
 * @param username 用户名
 */
export function getUserByUsername(username: string): Promise<UserDetail> {
  return request.get(`/user-biz/user/username/${username}`)
}

/**
 * 根据邮箱获取用户信息
 * @param email 邮箱
 */
export function getUserByEmail(email: string): Promise<UserDetail> {
  return request.get(`/user-biz/user/email/${email}`)
}

/**
 * 根据手机号获取用户信息
 * @param mobile 手机号
 */
export function getUserBymobile(mobile: string): Promise<UserDetail> {
  return request.get(`/user-biz/user/mobile/${mobile}`)
}

/**
 * 创建用户
 * @param data 用户信息
 */
export function createUser(data: UserDetail): Promise<boolean> {
  return request.post('/user-biz/user', data)
}

/**
 * 更新用户信息
 * @param data 用户信息
 */
export async function updateUser(data: UserDetail): Promise<boolean> {
  return request.put('/user-biz/user', data)
}

/**
 * 删除用户
 * @param id 用户ID
 */
export async function deleteUser(id: string): Promise<boolean> {
  return request.delete(`/user-biz/user/${id}`)
}

/**
 * 获取用户列表
 * @returns 用户列表
 */
export function getUserList(): Promise<UserDetail[]> {
  return request.get('/user-biz/user')
}

/**
 * 分页查询用户列表
 * @param pageQuery 分页查询参数
 */
export function getUserPage(pageQuery: PageQuery<UserQuery>): Promise<PageResult<UserDetail>> {
  return request.post('/user-biz/user/page', pageQuery)
}

/**
 * 新增或修改用户
 * @param data 用户信息
 */
export function saveOrUpdateUser(data: UserDetail): Promise<boolean> {
  return request.post('/user-biz/user/saveOrUpdate', data)
}

/**
 * 启用用户
 * @param id 用户ID
 */
export async function enableUser(id: string): Promise<boolean> {
  return request.put(`/user-biz/user/enable/${id}`)
}

/**
 * 禁用用户
 * @param id 用户ID
 */
export async function disableUser(id: string): Promise<boolean> {
  return request.put(`/user-biz/user/disable/${id}`)
}

/**
 * 重置用户密码
 * @param id 用户ID
 * @param newPassword 新密码
 */
export async function resetUserPassword(id: string, newPassword: string): Promise<boolean> {
  return request.put(`/user-biz/user/reset-password/${id}`, { newPassword })
}

/**
 * 检查用户是否重复
 * @param data
 */
  export function checkUserDuplicate(data: UserDetail):Promise<boolean>{
  return request.post('/user-biz/user/checkUserDuplicate', data)
}
